<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.2
 * 日期：2011-03-25
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。


 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 
 * TRADE_FINISHED(表示交易已经成功结束，并不能再对该交易做后续操作);
 * TRADE_SUCCESS(表示交易已经成功结束，可以对该交易做后续操作，如：分润、退款等);
 */

header("Content-type: text/html; charset=utf-8");
require("alipay.config.php");
require("alipay_notify.class.php");
require_once('../../global.php');
require_once('inc/setting.inc.php');
require_once('inc/function.php');
require_once('inc/smarty.admin.php');

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($aliapy_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//请在这里加上商户的业务逻辑程序代
	
	//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
    $out_trade_no	= $_POST['out_trade_no'];	    //获取订单号
    $trade_no		= $_POST['trade_no'];	    	//获取支付宝交易号
    $total_fee		= $_POST['total_fee'];			//获取总价格
	$paystate=1;
	$paytype=1;
    if($_POST['trade_status'] == 'TRADE_FINISHED') {
		$orders=explode(",",$out_trade_no);
		$ordernum=count($orders);
		if($ordernum!=1){
			$order=$orders[0];
			foreach($orders as $value){
				if(checktrade($value,1,1)==1){
					if(checktrade($value,1)==1){
						if(!updatetrade($value,1,1)){
							$paystate=0;
						}
					}
					if(checkorder($value)){
						$paytype=0;
						if(checkorder($value,'weifukuandd')){
							$tradeid=hrSelect(0,1,"tb_trade","tradeid"," and orderid=(select orderid from tb_trade where tb_trade.tradeid='".$value."') and tradeid!='".$value."'");
							$order=$tradeid['tradeid'];
							if(!updatetrade($order,1,0)){
								$paystate=0;
							}
						}
					}
				}else{
					$paystate=0;
				}
			}
		}else{
			$order=$out_trade_no;
			if(checktrade($order,1,1)==1){
				if(checktrade($order,1)==1){
					if(!updatetrade($order,1,1)){
						$paystate=0;
					}
				}
				if(checkorder($order)){
					$paytype=0;
					if(checkorder($order,'weifukuandd')){
						$tradeid=hrSelect(0,1,"tb_trade","tradeid"," and orderid=(select orderid from tb_trade where tb_trade.tradeid='".$order."') and tradeid!='".$order."'");
						$order=$tradeid['tradeid'];
						if(!updatetrade($order,1,0)){
							$paystate=0;
						}
					}
				}
			}else{
				$paystate=0;
			}
		}
    }else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
		$orders=explode(",",$out_trade_no);
		$ordernum=count($orders);
		if($ordernum!=1){
			$order=$orders[0];
			foreach($orders as $value){
				if(checktrade($value,1,1)==1){
					if(checktrade($value,1)==1){
						if(!updatetrade($value,1,1)){
							$paystate=0;
						}
					}
					if(checkorder($value)){
						$paytype=0;
						if(checkorder($value,'weifukuandd')){
							$tradeid=hrSelect(0,1,"tb_trade","tradeid"," and orderid=(select orderid from tb_trade where tb_trade.tradeid='".$value."') and tradeid!='".$value."'");
							$order=$tradeid['tradeid'];
							if(!updatetrade($order,1,0)){
								$paystate=0;
							}
						}
					}
				}else{
					$paystate=0;
				}
			}
		}else{
			$order=$out_trade_no;
			if(checktrade($order,1,1)==1){
				if(checktrade($order,1)==1){
					if(!updatetrade($order,1,1)){
						$paystate=0;
					}
				}
				if(checkorder($order)){
					$paytype=0;
					if(checkorder($order,'weifukuandd')){
						$tradeid=hrSelect(0,1,"tb_trade","tradeid"," and orderid=(select orderid from tb_trade where tb_trade.tradeid='".$order."') and tradeid!='".$order."'");
						$order=$tradeid['tradeid'];
						if(!updatetrade($order,1,0)){
							$paystate=0;
						}
					}
				}
			}else{
				$paystate=0;
			}
		}
	}else {
		//验证失败
		$paystate=2;
	}
}
//banklog($_POST['out_trade_no'],1,$paystate,1,$_POST);
if($paystate!=1){
	echo "success";
}else{
	echo "fail";
}
?>